/**
 * @description ajax请求的封装
 */

// const BASE_URL = 'http://47.98.254.19:3001'; // 接口请求的 URL
const BASE_URL = 'http://139.9.177.51:3701'

/* ajax方法 */
function ajax(options) {
  // 默认参数
  const defaultOpts = {
    method: 'get',
    data: {},
    headers: {}
  }

  // 合并参数
  const params = Object.assign({}, defaultOpts, options)

  // 获取参数值
  let method = params.method
  let url = BASE_URL + params.url
  let data = params.data
  let success = params.success
  let headers = params.headers

  // 发送ajax
  const xhr = new XMLHttpRequest()
  xhr.onreadystatechange = function () {
    if (xhr.readyState === 4 && xhr.status === 200) {
      let response = JSON.parse(xhr.responseText)
      success(response)
    }
  }



  if (method === 'get') {
    // 处理参数
    let str = ''
    Object.keys(data).forEach(function (key) {
      str += `&${key}=${data[key]}`
    })
    str = str ? '?' + str.slice(1) : ''
    xhr.open(method, url + str)

    Object.keys(headers).length && Object.keys(headers).forEach(function (key) {
      xhr.setRequestHeader(key, headers[key])
    })

    xhr.send()

  } else {
    xhr.open(method, url)
    xhr.setRequestHeader('Content-Type', 'application/json;charset=utf-8');

    Object.keys(headers).length && Object.keys(headers).forEach(function (key) {
      xhr.setRequestHeader(key, headers[key])
    })

    xhr.send(JSON.stringify(data))
  }
}

/* 简洁版的 get 封装 */
function get(url, callback) {
  ajax({
    url: url,
    method: 'get',
    success: callback,
  })
}



/* 简洁版的 post 封装 */
function post(url, data, callback) {
  ajax({
    url: url,
    method: 'post',
    data,
    success: callback,
  })
}


/* 导出 */
module.exports = {
  ajax,
  get,
  post
}
